package common;

import com.jfinal.config.*;
import com.jfinal.core.JFinal;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.dialect.Sqlite3Dialect;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.jfinal.plugin.ehcache.EhCachePlugin;
import jfinal.rest.RestKit;
import model.User;

/**
 * API引导式配置
 */
public class DemoConfig extends JFinalConfig {

    /**
     * 建议使用 JFinal 手册推荐的方式启动项目 运行此 main
     * 方法可以启动项目，此main方法可以放置在任意的Class类定义中，不一定要放于此
     */
    public static void main(String[] args) {
        JFinal.start("/Users/luob/IdeaProjects/itrace/web/src/main/webapp", 10086, "/", 5);
    }

    /**
     * 配置常量
     */
    @Override
    public void configConstant(Constants me) {
        // 加载少量必要配置，随后可用getProperty(...)获取值
        loadPropertyFile("a_little_config.txt");
        me.setDevMode(getPropertyToBoolean("devMode", false));
    }

    /**
     * 配置路由
     */
    @Override
    public void configRoute(Routes me) {
        me.add("/", common.IndexController.class);
        me.add("/auth", controller.auth.IndexController.class);
        me.add("/dbmanager", controller.db_manager.IndexController.class, "/dbmanager");
        // 第三个参数为该Controller的视图存放路径

        // 配置路由，三个参数：访问路径（API版本），jfinal路由对象，要扫描的包(包下加了API注解的controller会被扫描)
        //RestKit.buildRoutes("/api", me, "luob.irest.api.v1");
    }

    /**
     * 配置插件
     */
    @Override
    public void configPlugin(Plugins me) {
        me.add(new EhCachePlugin());
        // 配置C3p0数据库连接池插件

        C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"),
                getProperty("user"), getProperty("password").trim());
        c3p0Plugin.setDriverClass("org.sqlite.JDBC"); // 指定驱动程序
        me.add(c3p0Plugin);

        // 配置ActiveRecord插件
        ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
        arp.setDialect(new Sqlite3Dialect());
        me.add(arp);
        arp.addMapping("user", User.class);

        //arp.addMapping("view_desk_room", DeskRoomView.class);
    }

    /**
     * 配置全局拦截器
     */
    @Override
    public void configInterceptor(Interceptors me) {

    }

    /**
     * 配置处理器
     */
    @Override
    public void configHandler(Handlers me) {
        // 配置handler
        //RestKit.buildHandler(me);
    }
}
